package com.yupi.yuoj.model.vo;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Map;

/**
 * 竞赛排名视图
 */
@Data
public class ContestRankVO implements Serializable {
    
    /**
     * 用户 id
     */
    private Long userId;

    /**
     * 用户信息
     */
    private UserVO userVO;

    /**
     * 排名
     */
    private Integer rank;

    /**
     * 总分数
     */
    private Integer score;

    /**
     * 总罚时（分钟）
     */
    private Integer totalPenalty;

    /**
     * 解决题目数
     */
    private Integer solvedCount;

    /**
     * 提交次数
     */
    private Integer submitCount;

    /**
     * 每道题的状态，key 为题目ID，value 为该题的状态信息
     */
    private Map<Long, QuestionStatusVO> questionStatusMap;

    /**
     * 题目状态视图（包含每道题的解题状态）
     */
    @Data
    public static class QuestionStatusVO implements Serializable {
        
        /**
         * 题目 id
         */
        private Long questionId;

        /**
         * 是否解决
         */
        private Boolean solved;

        /**
         * 尝试次数
         */
        private Integer attempts;

        /**
         * 首次通过时间
         */
        private Date acceptedTime;

        /**
         * 罚时（分钟）
         */
        private Integer penalty;

        private static final long serialVersionUID = 1L;
    }

    private static final long serialVersionUID = 1L;
} 